﻿using System;
using NLog;

namespace Onshi.POS.Modelo.Objetos
{
    /// <summary>
    /// Clase para el manejo de excepciones utilizando rutinas de log.
    /// </summary>
    public class OnshiException : Exception
    {
        #region Constructores
        public OnshiException():base()
        {
            RegistrarError(this);
        }

        public OnshiException(String message):base(message) 
        {
            RegistrarError(this);
        }

        public OnshiException(String message, Exception innerException)
            : base(message, innerException) 
        {
            RegistrarError(this);
        }
        #endregion

        #region Metodos
        internal void RegistrarError(Exception Exception)
        {
            OnshiLog.ObtenerInstancia.LogException(LogLevel.Error, this.ToString(), this);
        }
        #endregion

        #region Propiedades

        public override string Message
        {
            get
            {
                String result = String.Empty;
                if (base.InnerException != null)
                    result = String.Format("Mensaje: {0}. \n\r Mensaje Interno: {1}.", base.Message, base.InnerException.ToString());
                else
                    result = String.Format("Mensaje: {0}.", base.Message);
                return result;
            }
        }

        public override string ToString()
        {
            return this.Message;
        }

        #endregion
    }
}
